package exttable.analysiscreation;


import utils.Localisation;
import javax.swing.*;
import javax.swing.table.AbstractTableModel;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by IntelliJ IDEA.
 * User: ADMIN
 * Date: 20.07.11
 * Time: 12:10
 * To change this template use File | Settings | File Templates.
 */
public class CreateAnalysisTableModel  extends AbstractTableModel implements Serializable {
    // здесь мы будем хранить названия столбцов
    private ArrayList<String> columnNames = new ArrayList<String>();

    private List<List<String>> data = new ArrayList<List<String>>();
    private List<String> dataList = new ArrayList<String>();
    private boolean editable;

    @Override
    public int getRowCount() {
        return data.size();
    }

    @Override
    public int getColumnCount() {
        return columnNames.size();
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        return (data.get(rowIndex)).get(columnIndex);
    }

    // конструктор позволяет задать возможность редактирования
    public CreateAnalysisTableModel(List<List<String>> listDicValues, boolean editable) {
        this.editable = editable;

        columnNames.add("ru");
        columnNames.add("en");
        columnNames.add("kk");

        if(listDicValues.size()<1){
            for (String columnName : columnNames) {
                dataList.add("");
            }
        data.add(dataList);
        }else{
          data=new ArrayList<List<String>>(listDicValues);
        }

    }

    // возможность редактирования
    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        return editable;
    }

    // название столбца
    @Override
    public String getColumnName(int columnIndex) {
        return columnNames.get(columnIndex);
    }

    @Override
    public void setValueAt(Object value, int rowIndex, int columnIndex) {
        (data.get(rowIndex)).set(columnIndex, value.toString());
    }

    public void addRow() {
        List<String> dataListTemp = new ArrayList<String>();
        for (int i = 0; i < columnNames.size(); i++) {
            dataListTemp.add("");
        }
        data.add(dataListTemp);
        fireTableStructureChanged();
    }

    public void removeRow(int indexList[]) {
        if(indexList.length<1){
            JOptionPane.showMessageDialog(null, Localisation.getMessage("warring.emptyRow"),
                    Localisation.getMessage("warring.waring"),
                    JOptionPane.WARNING_MESSAGE);
            return;
        }
        int countRemoving=0;
        for (int index : indexList) {
            data.remove(index-countRemoving);
            fireTableStructureChanged();
            countRemoving++;
        }
    }

    public List<List<String>> getData() {
        return data;
    }

    public void setData(List<List<String>> data) {
        this.data = data;
    }
}
